/**
 * 屏幕旋转监听工具函数
 * @author Wu.Liang
 * @date 2025-01-21
 */

/**
 * 安全地添加屏幕旋转监听
 * @param {Function} callback 回调函数
 * @returns {boolean} 是否成功添加监听
 */
export function safeAddOrientationListener(callback) {
  try {
    if (typeof uni !== 'undefined' && typeof uni.onWindowOrientationChange === 'function') {
      uni.onWindowOrientationChange(callback)
      return true
    } else {
      // 只在开发环境显示警告
      if (process.env.NODE_ENV === 'development') {
        console.warn('uni.onWindowOrientationChange API不可用，使用窗口大小变化监听作为备选方案')
      }
      // 使用窗口大小变化作为备选方案
      if (typeof uni !== 'undefined' && typeof uni.onWindowResize === 'function') {
        uni.onWindowResize(callback)
        return true
      }
      return false
    }
  } catch (error) {
    // 只在开发环境显示错误
    if (process.env.NODE_ENV === 'development') {
      console.warn('添加屏幕旋转监听失败:', error)
    }
    return false
  }
}

/**
 * 安全地移除屏幕旋转监听
 * @param {Function} callback 回调函数
 * @returns {boolean} 是否成功移除监听
 */
export function safeRemoveOrientationListener(callback) {
  try {
    if (typeof uni !== 'undefined' && typeof uni.offWindowOrientationChange === 'function') {
      uni.offWindowOrientationChange(callback)
      return true
    } else {
      // 移除窗口大小变化监听
      if (typeof uni !== 'undefined' && typeof uni.offWindowResize === 'function') {
        uni.offWindowResize(callback)
        return true
      }
      return false
    }
  } catch (error) {
    // 只在开发环境显示错误
    if (process.env.NODE_ENV === 'development') {
      console.warn('移除屏幕旋转监听失败:', error)
    }
    return false
  }
}

/**
 * 检查屏幕旋转API是否可用
 * @returns {boolean} API是否可用
 */
export function isOrientationAPIAvailable() {
  return typeof uni !== 'undefined' && typeof uni.onWindowOrientationChange === 'function'
}

/**
 * 获取当前屏幕方向
 * @returns {string} 屏幕方向 ('portrait' | 'landscape')
 */
export function getCurrentOrientation() {
  try {
    if (typeof uni !== 'undefined' && typeof uni.getSystemInfoSync === 'function') {
      const systemInfo = uni.getSystemInfoSync()
      return systemInfo.windowWidth > systemInfo.windowHeight ? 'landscape' : 'portrait'
    }
    return 'portrait'
  } catch (error) {
    // 只在开发环境显示错误
    if (process.env.NODE_ENV === 'development') {
      console.warn('获取屏幕方向失败:', error)
    }
    return 'portrait'
  }
}
